package com.neverwinterdp.sparkngin.http;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.QueryStringDecoder;
import com.neverwinterdp.message.Message;
import com.neverwinterdp.netty.http.RouteHandlerGeneric;
import com.neverwinterdp.sparkngin.Ack;
import com.neverwinterdp.sparkngin.Sparkngin;
import com.neverwinterdp.util.JSONSerializer;
/**
* @author Tuan Nguyen
* @email tuan08@gmail.com
*/
public class JSONMessageRouteHandler extends RouteHandlerGeneric {
private Sparkngin sparkngin ;
public JSONMessageRouteHandler(Sparkngin sparkngin) {
this.sparkngin = sparkngin ;
}
@Override
protected void doGet(ChannelHandlerContext ctx, HttpRequest httpReq) {
QueryStringDecoder reqDecoder = new QueryStringDecoder(httpReq.getUri()) ;
String data = reqDecoder.parameters().get("data").get(0) ;
Message message = JSONSerializer.INSTANCE.fromString(data, Message.class) ;
Ack ack = sparkngin.push(message);
writeJSON(ctx, httpReq, ack) ;
}
protected void doPost(ChannelHandlerContext ctx, HttpRequest httpReq) {
FullHttpRequest req = (FullHttpRequest) httpReq ;
ByteBuf byteBuf = req.content() ;
byte[] data = new byte[byteBuf.readableBytes()] ;
byteBuf.readBytes(data) ;
byteBuf.release() ;
Message message = JSONSerializer.INSTANCE.fromBytes(data, Message.class) ;
Ack ack = sparkngin.push(message);
writeJSON(ctx, httpReq, ack) ;
}
public void close() {
super.close() ;
}
}